package com.ssd.handler;

import com.ssd.model.domain.RefundRecord;
import com.ssd.model.domain.Trading;

import java.math.BigDecimal;

/**
 * 交易前置处理接口
 *
 * @author itcast
 */
public interface BeforePayHandler {
    /***
     * 交易单参数校验，通过则生成交易号
     * @param tradingEntity 交易订单
     * @return 是否符合要求
     */
    void checkCreateTrading(Trading tradingEntity);

    /***
     * 查询交易单参数校验
     * @param trading 交易订单
     */
    void checkQueryTrading(Trading trading);

    /***
     * 退款交易单参数校验
     * @param trading 交易订单
     * @param refundAmount 退款金额
     */
    void checkRefundTrading(Trading trading, BigDecimal refundAmount);

    /***
     * 查询退款交易单参数校验
     * @param refundRecord 退款记录
     */
    void checkQueryRefundTrading(RefundRecord refundRecord);

    /***
     * 关闭交易单参数校验
     * @param trading 交易订单
     */
    void checkCloseTrading(Trading trading);
}

